کانتر ها یا شمارنده ها المان هایی هستند که برای شمارش به صورت افزایشی یا کاهشی به کار میروند. کانترهای S7 نیز مانند تایمر های S7 ناحیه ی خاصی از حافظه CPU را بخود اختصاص داده اند. در این ناحیه ، برای هر کانتر یک Word یعنی 16 بیت رزرو شده است. تعداد کانتر بستگی به نوع CPU دارد که در مشخصات فنی آن آورده میشود.
مقدار کانتر بصورت BCD و از 0 تا 999 میباشد ( در عین حال ، میتوان معادل باینری آن را نیز داشت) چون هر رقم 4 بیت را به خود اختصاص میدهد ، پس از 16 بیت فوق 12 بیت یعنی بیت های 0 تا 11 استفاده میشوند. شکل زیر ، عدد 127 را که در ناحیه ی حافظه یک کانتر قرار گرفته است ، نشان میدهد.
اگر پوشه ی Counters را در قسمت Program Element باز کنید ، خواهید دید که در Step7 سه نوع کانتر وجود دارد.
کانتر کاهشی فقط اعداد را به سمت صفر شمارش میکند. معمولاً برای کار کردن با کانتر کاهشی یک مقدار اولیه به آن Load میشود. سپس ، کانتر از آن مقدار کم میکند و کانتر افزایشی فقط عدد را به صورت افزایشی به صفر اضافه میکند و در کانتر افزایشی / کاهشی هر دو عمل انجام میشود. شکل بلاک کانتر ها در زبان LAD و FBD مشابه است. نمای کانتر افزایشی / کاهشی به صورت زیر است.
در قسمت بالای کانتر به جای علامت سوال ، آدرس کانتر وارد میشود. آدرس کانتر با حروف C و یک عدد صحیح بعد از آن انجام میشود.
پایه CU : با مشاهده ی لبه ی مثبت در این پایه ، یک عدد به مقدار عددی کانتر اضافه میشود.
پایه CD : با مشاهده ی لبه ی مثبت در این پایه ، یک عدد از مقدار عددی شمارش شده کم میشود.
لازم به ذکر است که اگر عدد کانتر صفر باشد ، تغییری نخواهد کرد. کانتر های S7 عدد منفی ندارند.
پایه S : اگر مقدار این پایه یک شود ، عدد شمارش شدهی کانتر با مقدار PV ست خواهد شد.
پایه PV : در این پایه مقدار اولیه کانتر (Preset Value) وارد میشود. فرمت این عدد باید به صورت یک عدد 16 بیتی (Word) باشد که با علامت C# وارد میشود. ( مثلاً C#100 ) بدیهی است که مقدار وارد شده در این پایه نباید از مقدار ماکزیمم اعداد در کانتر های S7(999) تجاوز کند.
پایه R : این پایه Reset است. در صورت مشاهده ی لبه مثبت پالس مقدار شمارش شده کانتر را صفر میکند.
پایه ی خروجی Q : این پایه خروجی بیتی کانتر است. فعال شدن خروجی بیتی کانتر مشروط به وارد کردن هر عدد دیگر به غیر از صفر به کانتر میباشد. به عبارت دیگر :
0 = Q > ---- عدد کانتر صفر باشد
1 = Q > ----- عدد کانتر غیر از صفر
پایه ی خروجی CV : این پایه مقدار شمارش شده ی کانتر را به صورت باینری خارج میکند. در صورت نیاز به مقایسه یا عملیات محاسباتی در عدد حاصله و یا Indicate نمودن آن در سیستم های مانیتورینگ ، از این پایه استفاده میشود. Data Type آن Word است ، بنابراین به یک MW یا DBW نیاز دارد.
پایه ی خروجی CV-BCD : این پایه نیز خروجی عددی کانتر است ، ولی عدد شمارش شده را به صورت BCD خارج میکند.
خروجی های کانتر در صورت نیاز میتوانند متغیری دریافت نکنند ، بنابراین Optional هستند.
کانتر افزایشی فقط پایه ی ورودی CD را نداشته ، و کانتر کاهشی فقط پایه ی ورودی CU را ندارد و دیگر پایه های آن مشابه کانتر افزایشی / کاهشی میباشد.
لازم به ذکر است که مانند تایمر های S7 ، کانتر ها نیز به صورت Coil ارائه شده اند. اگر لازم باشد که پایه های یک کانتر از یکدیگر جدا باشند ، باید از کانتر های Coil استفاده کنیم.
مقدار کانتر بصورت BCD و از 0 تا 999 میباشد ( در عین حال ، میتوان معادل باینری آن را نیز داشت) چون هر رقم 4 بیت را به خود اختصاص میدهد ، پس از 16 بیت فوق 12 بیت یعنی بیت های 0 تا 11 استفاده میشوند. شکل زیر ، عدد 127 را که در ناحیه ی حافظه یک کانتر قرار گرفته است ، نشان میدهد.
نمایندگی زیمنس ایران
نمایندگی زیمنس تهران
کانتر کاهشی فقط اعداد را به سمت صفر شمارش میکند. معمولاً برای کار کردن با کانتر کاهشی یک مقدار اولیه به آن Load میشود. سپس ، کانتر از آن مقدار کم میکند و کانتر افزایشی فقط عدد را به صورت افزایشی به صفر اضافه میکند و در کانتر افزایشی / کاهشی هر دو عمل انجام میشود. شکل بلاک کانتر ها در زبان LAD و FBD مشابه است. نمای کانتر افزایشی / کاهشی به صورت زیر است.
در قسمت بالای کانتر به جای علامت سوال ، آدرس کانتر وارد میشود. آدرس کانتر با حروف C و یک عدد صحیح بعد از آن انجام میشود.
پایه CU : با مشاهده ی لبه ی مثبت در این پایه ، یک عدد به مقدار عددی کانتر اضافه میشود.
پایه CD : با مشاهده ی لبه ی مثبت در این پایه ، یک عدد از مقدار عددی شمارش شده کم میشود.
لازم به ذکر است که اگر عدد کانتر صفر باشد ، تغییری نخواهد کرد. کانتر های S7 عدد منفی ندارند.
پایه S : اگر مقدار این پایه یک شود ، عدد شمارش شدهی کانتر با مقدار PV ست خواهد شد.
پایه PV : در این پایه مقدار اولیه کانتر (Preset Value) وارد میشود. فرمت این عدد باید به صورت یک عدد 16 بیتی (Word) باشد که با علامت C# وارد میشود. ( مثلاً C#100 ) بدیهی است که مقدار وارد شده در این پایه نباید از مقدار ماکزیمم اعداد در کانتر های S7(999) تجاوز کند.
پایه R : این پایه Reset است. در صورت مشاهده ی لبه مثبت پالس مقدار شمارش شده کانتر را صفر میکند.
پایه ی خروجی Q : این پایه خروجی بیتی کانتر است. فعال شدن خروجی بیتی کانتر مشروط به وارد کردن هر عدد دیگر به غیر از صفر به کانتر میباشد. به عبارت دیگر :
0 = Q > ---- عدد کانتر صفر باشد
1 = Q > ----- عدد کانتر غیر از صفر
پایه ی خروجی CV : این پایه مقدار شمارش شده ی کانتر را به صورت باینری خارج میکند. در صورت نیاز به مقایسه یا عملیات محاسباتی در عدد حاصله و یا Indicate نمودن آن در سیستم های مانیتورینگ ، از این پایه استفاده میشود. Data Type آن Word است ، بنابراین به یک MW یا DBW نیاز دارد.
پایه ی خروجی CV-BCD : این پایه نیز خروجی عددی کانتر است ، ولی عدد شمارش شده را به صورت BCD خارج میکند.
خروجی های کانتر در صورت نیاز میتوانند متغیری دریافت نکنند ، بنابراین Optional هستند.
کانتر افزایشی فقط پایه ی ورودی CD را نداشته ، و کانتر کاهشی فقط پایه ی ورودی CU را ندارد و دیگر پایه های آن مشابه کانتر افزایشی / کاهشی میباشد.
لازم به ذکر است که مانند تایمر های S7 ، کانتر ها نیز به صورت Coil ارائه شده اند. اگر لازم باشد که پایه های یک کانتر از یکدیگر جدا باشند ، باید از کانتر های Coil استفاده کنیم.